// @ts-nocheck
Page({
    data: {
      questionList: [],    // 题目列表（单题也存为数组，统一逻辑）
      currentIndex: 0,     // 当前题索引
      currentQuestion: {}, // 当前显示的题目
      totalCount: 0,       // 总题数
      score: 0,            // 得分
      isAnswered: false,   // 当前题是否已答
      selectedIndex: -1,   // 选中的选项索引
      showResultBtn: false // 是否显示结果按钮
    },
  
    // 选项点击事件（必须与 WXML 中 bind:tap 一致）
    click(e) {
      if (this.data.isAnswered) return; // 防止重复答题
  
      const optionIndex = e.currentTarget.dataset.index;
      const scores = [2, 1, 0, -1];      // 选项对应分值
      const currentScore = scores[optionIndex] || 0;
  
      this.setData({
        score: this.data.score + currentScore,
        isAnswered: true,
        selectedIndex: optionIndex
      });
  
      // 判断是否是最后一题
      const isLastQuestion = this.data.currentIndex === this.data.totalCount - 1;
      if (isLastQuestion) {
        this.setData({ showResultBtn: true }); // 显示结果按钮
      } else {
        // 切换到下一题（300ms 延迟）
        setTimeout(() => {
          this.setData({
            currentIndex: this.data.currentIndex + 1,
            currentQuestion: this.data.questionList[this.data.currentIndex + 1],
            isAnswered: false,
            selectedIndex: -1
          });
        }, 300);
      }
    },
  
    // 上一题按钮事件
    back() {
      if (this.data.currentIndex > 0) {
        this.setData({
          currentIndex: this.data.currentIndex - 1,
          currentQuestion: this.data.questionList[this.data.currentIndex - 1],
          isAnswered: false,
          selectedIndex: -1,
          showResultBtn: false
        });
      }
    },
  
    // 页面加载时获取题目
    onLoad(options) {
      let id = options.id; // 从 URL 参数获取测试 ID
      if (!id || isNaN(Number(id)) || Number(id) <= 0) {
        wx.showModal({
          title: '参数错误',
          content: '测试ID无效，请重新进入',
          showCancel: false,
          success: () => {
            wx.navigateBack({ delta: 1 }); // 返回上一页
          }
        });
        return;
      }
      id = Number(id);
  
      // 显示加载提示
      wx.showLoading({ title: '加载题目中...', mask: true });
      const requestTimeout = setTimeout(() => {
        wx.hideLoading();
        wx.showToast({ title: '加载超时，请重试', icon: 'none' });
      }, 10000); // 10秒超时
  
      // 请求后端接口（/testProblem/{id}）
      wx.request({
        url: `http://localhost:8080/testProblem/${id}`,
        method: 'GET',
        success: (resp) => {
          clearTimeout(requestTimeout);
          wx.hideLoading();
  
          if (resp.statusCode !== 200) {
            wx.showToast({ title: `接口错误：${resp.statusCode}`, icon: 'none' });
            return;
          }
  
          // 解析后端返回的单个题目（需包含 problemName 和 testProblemSelect）
          const singleQuestion = resp.data || {};
          if (!singleQuestion.problemName || !singleQuestion.testProblemSelect) {
            wx.showToast({ title: '题目数据无效', icon: 'none' });
            return;
          }
  
          // 单题也存入数组，保持多题逻辑统一
          this.setData({
            questionList: [singleQuestion],
            totalCount: 1,
            currentQuestion: singleQuestion,
            currentIndex: 0
          });
        },
        fail: (err) => {
          clearTimeout(requestTimeout);
          wx.hideLoading();
          const errorMsg = err.errMsg.includes('timeout') ? '网络超时' : '加载失败';
          wx.showToast({ title: errorMsg, icon: 'none' });
        }
      });
    }
  });